Keyboard, video, and mouse (KVM) redirection refers to the redirection of signals from a keyboard, a video source, or a mouse to a site remote to the keyboard, the video source, or the mouse. KVM redirection is typically used for the maintenance and configuration of computers at a remote site. In an enterprise environment, KVM redirection allows an information technology (IT) team to administer and maintain corporate servers and desktop computers through a network without being physically present at the location of the computers. In a server environment, it is unlikely to allocate a console to each server where the servers are clustered in a computer room. KVM redirection allows an IT team to manage the servers through a network from one single remote location.
One of the most common implementations of video redirection is based on tile compression algorithms. These algorithms typically split the screen into rectangles of pixel data (e.g., tiles of 64×64 pixels each), and look for changes in the corresponding tiles between subsequently sampled frames. If a change is detected, the tile from the currently sampled frame is compressed and sent, or redirected, to a remote console. Otherwise, no action is taken with respect to that tile. An example of an algorithm and network protocol is the Virtual Network Computing (VNC) based on the Remote Frame Buffer (RFB) protocol.
FIG. 1 shows an example of a video redirection system 11 which implements the tile compression algorithm mentioned above. Video redirection system 11 redirects a video stream from a video source 14 to a remote console via a network interface 13. Video redirection system 11 is coupled to a memory 12 via a memory bus 15. Memory 12 includes a current frame buffer 121 for storing a currently sampled frame, a reference frame buffer 122 for storing a reference sampled frame (hereinafter “a reference frame”), and a compressed tile buffer 123 for storing compressed tiles of the currently sampled frame.
When a new screen shot of video stream is to be redirected to a remote viewer, a frame sampler 111 of video redirection system 11 grabs a frame and saves it into current frame buffer 121. Grabbing a frame may involve sampling the video at a pre-determined rate to comply with a desired resolution. After an entire frame is sampled and saved, a tile comparator 112 of video redirection system 11 reads the frame from current frame buffer 121 and a reference frame from reference frame buffer 122 via memory bus 15. Tile comparator 112 compares the two frames, tile by tile, to determine if any tile of the currently sampled frame is different from the corresponding tile of the reference frame. If a tile is different, the tile is sent to a compression module 113 for compression. The compressed tiles are buffered in compressed tile buffer 123 before being sent to a network module 114 of video redirection system 11 for transmission to the remote console. Thereafter, the content of current frame buffer 121 becomes the reference frame as a new frame cycle begins.
The aforementioned operations make heavy use of memory bus 15. In every frame cycle, both the currently sampled frame and the reference frame are read from memory 12. This creates a burden to the memory bandwidth and requires a high performance memory to be used. A fast and wide memory array may accommodate the bandwidth required by the above operations but the cost is high.